/*************************************************************************
 * Copyright 2008 David Almilli
 *  
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 *  
 *     http://www.apache.org/licenses/LICENSE-2.0 
 *      
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License.
 **************************************************************************/
package com.almilli.catnip.beacon;

import com.almilli.catnip.web.HmeHost;
import com.tivo.hme.interfaces.IFactory;

/**
 * The <code>TiVoBeacon</code> interface is used to register ports and HME applications with the
 * TiVo beacon.  It will announce the existence of those services to TiVos on the local network
 * using the mDNS (Apple Bonjour) protocol.
 * @author s2kdave
 */
public interface TiVoBeacon {
    /**
     * Adds a new host to the beacon
     * @param host the host to add
     */
    public void addHost(HmeHost host);
    
    /**
     * Removes a host from the beacon
     * @param host the host to remove
     */
    public void removeHost(HmeHost host);
    
    /**
     * Registers a new HME application.
     * @param factory the factory for the application
     */
	public void register(IFactory factory);

    /**
     * Unregisters an existing HME application.
     * @param factory the factory for the application
     */
	public void unregister(IFactory factory);
}
